﻿using System;
using System.Collections.Generic;


namespace QSharp.Scheme.Classical.Graphs
{
    public interface IVertex
    {
    }

    public interface IDistance : IComparable<IDistance>
    {
        bool IsInfinity();
        IDistance Add(IDistance that);
    }

    public interface IGetAllVertices
    {
        IEnumerable<IVertex> GetAllVertices();
    }

    public interface IGetWeight
    {
        IDistance GetWeight(IVertex source, IVertex target);
    }

    public interface IGetIncidentalVertices
    {
        IEnumerable<IVertex> GetIncidentalVertices(IVertex c);
    }

    public interface IWeightedGraph : IGetWeight, IGetAllVertices, IGetIncidentalVertices
    {
        int VertexCount { get; }
    }
}
